//package util;
//
//import org.apache.http.*;
//import org.apache.http.client.CookieStore;
//import org.apache.http.client.entity.UrlEncodedFormEntity;
//import org.apache.http.client.methods.CloseableHttpResponse;
//import org.apache.http.client.methods.HttpGet;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.client.protocol.HttpClientContext;
//import org.apache.http.concurrent.FutureCallback;
//import org.apache.http.impl.client.BasicCookieStore;
//import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
//import org.apache.http.impl.nio.client.HttpAsyncClients;
//import org.apache.http.util.EntityUtils;
//
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.InputStreamReader;
//import java.io.Reader;
//import java.util.List;
//import java.util.concurrent.Future;
//
//public class HttpAsyncClientUtil {
//
//	private static HttpClientContext context = HttpClientContext.create();
//
//	/**
//	 * http async get
//	 *
//	 * @param url
//	 * @param data
//	 * @return
//	 */
//	public static void doGet(String url, String data) {
//		CookieStore cookieStore = new BasicCookieStore();
//		final CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault();
//
//		httpClient.start();
//		HttpGet httpGet = new HttpGet(url);
//		// httpGet.setHeader("Content-Type", "application/x-www-form-urlencoded");
//		try {
//			httpClient.execute(httpGet, context, new FutureCallback<HttpResponse>() {
//				@Override
//				public void completed(HttpResponse result) {
//					String body = "";
//					// 这里使用EntityUtils.toString()方式时会大概率报错，原因：未接受完毕，链接已关
//					try {
//						HttpEntity entity = result.getEntity();
//						if (entity != null) {
//							final InputStream instream = entity.getContent();
//							try {
//								final StringBuilder sb = new StringBuilder();
//								final char[] tmp = new char[1024];
//								final Reader reader = new InputStreamReader(instream, "UTF-8");
//								int l;
//								while ((l = reader.read(tmp)) != -1) {
//									sb.append(tmp, 0, l);
//								}
//								body = sb.toString();
//								System.out.println(body);
//							} finally {
//								instream.close();
//								EntityUtils.consume(entity);
//							}
//						}
//					} catch (ParseException e) {
//						e.printStackTrace();
//					} catch (IOException e) {
//						e.printStackTrace();
//					} finally {
//						close(httpClient);
//					}
//				}
//
//				@Override
//				public void failed(Exception ex) {
//					System.out.println(ex.toString());
//					close(httpClient);
//				}
//
//				@Override
//				public void cancelled() {
//
//				}
//			});
//		} catch (Exception e) {
//		}
//
//		//System.out.println("end-----------------------");
//	}
//
//	/**
//	 * http async post
//	 *
//	 * @param url
//	 * @param values
//	 * @return
//	 */
//	public static void doPost(String url, List<NameValuePair> values) {
//		CookieStore cookieStore = new BasicCookieStore();
//		CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault();
//
//		HttpPost httpPost = new HttpPost(url);
//		UrlEncodedFormEntity entity = new UrlEncodedFormEntity(values, Consts.UTF_8);
//		httpPost.setEntity(entity);
//		try {
//			httpClient.execute(httpPost, context, new FutureCallback<HttpResponse>() {
//				@Override
//				public void completed(HttpResponse result) {
//					System.out.println(result.toString());
//				}
//
//				@Override
//				public void failed(Exception ex) {
//					System.out.println(ex.toString());
//				}
//
//				@Override
//				public void cancelled() {
//
//				}
//			});
//		} catch (Exception e) {
//		}
//	}
//
//	private static void close(CloseableHttpAsyncClient client) {
//		try {
//			client.close();
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
//	}
//
//	/**
//	 * 直接把Response内的Entity内容转换成String
//	 *
//	 * @param httpResponse
//	 * @return
//	 */
//	public static String toString(CloseableHttpResponse httpResponse) {
//		// 获取响应消息实体
//		String result = null;
//		try {
//			HttpEntity entity = httpResponse.getEntity();
//			if (entity != null) {
//				result = EntityUtils.toString(entity, "UTF-8");
//			}
//		} catch (Exception e) {
//		} finally {
//			try {
//				httpResponse.close();
//			} catch (IOException e) {
//				e.printStackTrace();
//			}
//		}
//		return result;
//	}
//
//	public static void main(String[] args) throws Exception {
//		CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault();
//		try {
//			httpclient.start();
//			HttpGet request = new HttpGet("http://www.apache.org/");
//			Future<HttpResponse> future = httpclient.execute(request, null);
//			HttpResponse response = future.get();
//			System.out.println("Response: " + response.getStatusLine());
//			System.out.println("Shutting down");
//		} finally {
//			httpclient.close();
//		}
//		System.out.println("Done");
//	}
//}
